How do I check for stored “ ” in a string?
有人能告诉我如何正确地搜索存储在字符串类中的"tab"字符吗?
例如:
text.txt内容:
1 | std::cout <<"Hello"; // contains one tab space |
用户在提示下输入:./a.out MCP.CPP:
1 2 3 4 5 6 7 8 9 10 | string arrey; getline(cin, arrey); int i = 0; while( i != 10){ if(arrey[i] =="\t") // error here { std::cout <<"I found a tab!!!!" } i++; } |
由于文本文件中只有一个选项卡空间,所以我假设它存储在索引[0]中,但问题是我似乎无法进行比较,也不知道如何搜索它。有人能帮忙解释另一种选择吗?
首先,什么是
但是,您可以将一个字符与另一个字符进行比较,如
1 | arrey[i] == '\t' |
为什么不使用C++库提供的内容呢?你可以这样做:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> #include <string> #include using namespace std; int main() { string arrey; getline(cin, arrey); if (arrey.find("\t") != std::string::npos) { std::cout <<"found a tab!" << ' '; } return 0; } |
代码基于此答案。这是std::find的引用。
关于您的编辑,如何确定输入将是10个位置?那可能太小或太大了!如果它小于输入的实际大小,则不会查看字符串的所有字符,如果字符串太大,则会溢出!
您可以使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> #include <string> using namespace std; int main() { string arrey; getline(cin, arrey); for(unsigned int i = 0; i < arrey.size(); ++i) { if (arrey[i] == '\t') { std::cout <<"I found a tab!!!!"; } } return 0; } |
试试这个:
1 2 3 4 5 | ... if(arrey.find('\t') != string::npos) { std::cout <<"I found a tab!!!!"; } |
有关