我正在用C ++制作文字冒险游戏。现在我得到这样的输入:
string word1, word2;
cin >> word1 >> word2;
parse(word1, word2);
示例输入可以是
goto store
现在,要退出,您必须输入quit
和任何其他文字才能退出。
如何使输入以空格分隔,我可以判断第二个字符串是否为空。
更新
我尝试了第一个答案,我在Windows上遇到了这个错误:
The instruction at 0x00426968 referenced memory at 0x00000000.
The memory could not be read.
Click OK to terminate the program.
答案 0 :(得分:0)
我认为这就是你要找的东西。我不知道解析是如何工作的,但这就是我解决问题的方法
string word1, word2;
cin >> word1;
if(word1 == "quit"){
//quit code
}
else
cin >> word2;
通过单独询问输入,您可以插入此if语句。这将检查第一个输入字符串是否“退出”,忽略第二个部分,然后运行退出代码。如果第一条输入不是“退出”,它将询问第二条输入。
答案 1 :(得分:0)
#include <vector>
#include <string>
#include <sstream>
std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
while (std::getline(ss, item, delim)) {
if(!item.empty()) //item not elems
elems.push_back(item);
}
return elems;
}
std::vector<std::string> split(const std::string &s, char delim) {
std::vector<std::string> elems;
split(s, delim, elems);
return elems;
}
此函数std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems)
可以使用用户定义分隔符拆分字符串,并将每个字符串存储到向量中。请注意,如果分隔的字符串为空,则不会加入字符串数组。
这个函数std::vector<std::string> split(const std::string &s, char delim)
是最后一个函数包装器之一,所以你只需要传递两个参数,方便你使用。
使用像这样的分割函数:
string line;
getline(std::cin,line);
auto strings =split(line,' ');
检查字符串大小你可以知道很多单词。
如果strings
大小等于1,那么您的第二个字符串为空。
答案 2 :(得分:-2)
使用此代码,我将整个输入放在一个名为InputText
的字符串中,并在循环中按char分析它。我将chars存储在一个名为Ch
的字符串中,以避免在我将其声明为char时显示ASCII代码而不是我的char的常见问题。我继续将chars附加到名为Temp
的临时字符串中。我有一个名为Stage
的int,它决定我的临时字符串应该去哪里。如果Stage
为1,那么我将其存储在word1
中,每当我到达第一个空格时,我将Stage
增加到2并重置临时值;因此,现在开始存储在word2
中。如果空间超过1,您可以在default
的{{1}}处显示错误消息。如果只有一个单词而且根本没有空格,你可以知道,因为我初始化switch
并且它在循环之后仍然是这样。
word2 = ""