2014-10-19 37 views
1

现在,我正在尝试,并且如标题所示,找到一种以奇怪方式拆分字符串的方法。将用户输入分割为前两个单词的一个空格,然后存储剩余的短语(C++)

比方说输入看起来像: 1234.5/N 1222.2/W Taco Tuesday

而对于用空格隔开的前两个单词给出将总是在格式#输入#/(N/S/W/E)

我遇到的问题是最后一个字。这个单词可以像它想要的一样多的空格,并且只被换行符“终止”。

我第一次尝试在做:

std::string input1; // number/Letter 
std::string input2; // number/Letter 
std::string input3; // word 
std::cin >> input1 >> input2 >> input3; 

的问题是,很明显的是,如果输入3中有一个空间,CIN不会捕获任何过去,去年空间。

我想过使用getline(cin,input),但我意识到我会得到一个单一的字符串,而不是3个单独的字符串。我认为从前两个数字中提取数字会更具挑战性(可能通过使用find(/)),以某种方式将该字母保留在斜杠之后,然后移动到下一个数字,提取该数字,然后保留该字母,并且最后得到这句话的其余部分,减掉斜杠后的字母。

此外,我将不得不将数字存储在单独的变量进行计算,记下使用的字母,并保留最后一个短语。

是否有任何合理的优雅的方式来做到这一点使用std :: string或至少有一些方法来至少提取前两个单词,然后将剩余的短语存储到一个字符串?

回答

1

你可以尝试读取前两个字与cin然后用getline

cin >> input1 >> input2; 
getline(cin, input3); 
相关问题