从缓冲区读取后获取字符串的长度
Getting the length of a string after reading from buffer
string str;
stringstream buffer;
buffer << is.rdbuf();
str = buffer.str();
cout << str.length();
size_t pos = str.find_first_not_of(".123456789");
有人可以向我解释为什么这段代码不起作用吗?
当我运行它时,它只是在我输入"12345"后坐在那里
这到底是怎么回事?!我对字符串流不太熟悉,但为什么这和其他看似平凡的操作不能按预期工作?
我想
你需要关闭流,即 Ctrl+D 或其他东西。
请记住,对于流,换行符只是另一(两个)字符。
因此,您可能需要使用可以处理行的不同输入流读取器。我不太了解 STD lib,但我敢打赌它就在那里。
也许这就是你要找的:
string str;
getline(is,str);
cout << str.length();
size_t pos = str.find_first_not_of(".123456789");
我真的不明白你说的不阅读转义序列是什么意思? Getline 将在您键入时读取所有内容。考虑以下示例(混合使用 C 和 C++ 构造时有点难看):
#include <stdio.h>
#include <iostream>
int main() {
std::string str;
getline(std::cin,str);
printf("string length: %ldn",str.length());
size_t pos = str.find_first_not_of(".123456789");
printf("first nondigit: %ldn",pos);
printf("you typed: %sn",str.c_str());
return 0;
}
如果我运行它并输入
12345nt a
我得到以下输出:
string length: 11
first nondigit: 5
you typed: 12345nt a
cin 等待输入分隔符。输入完字符串后按 Enter 键。
相关文章:
- 从C字符串中获取奇怪的字符串长度
- 获取字符串的长度并将其分配给数组
- 我如何获取从 C++ 到 C 的映射<字符串、int>#
- 调用CreateProcess()并获取字符串的返回值
- 从字符串中获取结构的大小
- Cryptopp:获取密码输入的填充字符串
- 获取无效的字符串大小
- 获取 OID(类型::b_oid)作为 MongoDB C++驱动程序中的字符串
- C ++编译器如何获取argv字符串的长度
- 给枚举一个整数,并在 C++ 中将其相关值作为字符串获取
- 如何使用字符串获取用户控制台输入
- 通过字符串获取小部件
- 无法从字符串获取数字输入
- 在C++的静态方法中将类名作为字符串获取
- 从设备实例路径字符串获取设备实例 DWORD
- HRESULT到字符串(获取文档路径)C++
- 如何从http请求体字符串获取文件名
- 如何使用带有垃圾字符的子字符串获取字符串
- 通过字符串获取对话框项的可能性
- 有没有办法将 WinAPI 错误标志作为字符串获取