现在,我正在尝试,并且如标题所示,找到一种以奇怪方式拆分字符串的方法。将用户输入分割为前两个单词的一个空格,然后存储剩余的短语(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或至少有一些方法来至少提取前两个单词,然后将剩余的短语存储到一个字符串?