测试字符串中的空格字符
Testing for a space character inside a string...?
我正在尝试测试字符串中的字符是否为空格,并且我非常沮丧:
string my_string;
cin >> my_string;
for (int i = 0; i < my_string.length(); i++)
{
if (my_string[i] == ' ') // this never becomes true...
{
cout << "this text should pop, but never does" << endl;
}
}
我没有得到任何错误,我已经在网上看了,但人们在不同的论坛上说这是如何测试一个空间。嗯。
cin >> my_string;
您正在接受格式化的输入。std::cin
丢弃该行中的任何空格,它读取到并只产生一个单词。
尝试相反
std::string my_string;
std::getline(std::cin, my_string);
获取单行,或者
#include <iterator>
// ...
std::string my_string((std::istreambuf_iterator<char>(std::cin)),
std::istreambuf_iterator<char>());
将文件结束标记前的所有内容放入字符串。
这是因为cin在第一个空格处停止读取,所以您实际上不会读取整个句子,而是读取第一个单词。
std::string my_string;
std::getline(std::cin, my_string);
for (int i = 0; i < my_string.length(); i++)
{
if (my_string[i] == ' ') // this never becomes true...
{
std::cout << "this text should pop, but never does" << std::endl;
}
}
另外,要测试是否存在空格,请使用std::string::find
!
std::string my_string;
std::cin >> my_string; // please do not use « using namespace std; » if possible
size_t space_position = my_string.find(' ');
if(space_position != std::string::npos)
{
std::cout << "found space" << std::endl;
}
相关文章:
- iStream 运算符跳过空格字符
- QString 从行首或行尾修剪非空格字符
- 将字符串分为连续的非空格字符的序列
- 在C 中查找非空格字符
- 查找下一个文件失败,出现空格字符
- 如何添加一个空格字符来触发 var args c++ execlp()
- 如果 C++ stdlib 流的解析数字紧跟非空格字符,如何引发错误
- 如何在重载提取运算符中读取行(忽略空格字符)
- 标记 CString 问题与制表符空格字符
- 检测空格字符 t、 等
- 使用 getchar() 输入字符的最有效方法,就像 cin 中没有换行符和空格字符一样C++
- 将空格字符添加到附加的每个项目,以必须擦除最后一个项目.如何改进
- c字符串 删除非字母/非空格字符 - C++
- Eclipse在运行调试器时破坏了带有空格字符的程序参数
- 打印n个空格字符-(f)printf格式
- 将字符串转换为char,空格字符未正确转换
- C++ 字符串.比较 不接受空格字符
- 第二个空格字符之后的字符串
- 为什么在Windows上std::fopen和std::filebuf::open会裁剪尾随空格字符
- Fstream排序-不需要一个空格字符