cin.getline(),而不使用字符串大小
cin.getline() without using string size
是否可以在不表示数组大小的情况下使用cin.getline()
?也就是说,使用以下伪代码:
char array[15];
cin.getline(array,'.'); // '.' Is the delimiter.
这行得通吗?
是:加入20世纪:
std::string str;
std::getline(std::cin, str, '.');
将会发生什么:
这将编译并运行,但您的分隔符不起作用,您将得到未定义的行为。此外,当没有给定数组大小时,您将失去1)异常处理。(当输入大于大小时,您将得到2)"堆栈损坏"运行时错误)。给定尺寸后,剩余长度将被切割。
1) 异常处理:
如果您为数组定义了一个大小,它将以子字符串形式显示用户输入,这样您就不会在字符串中写入超过其分配空间的字符。(即超过15)(只有当您定义大小时,这种类型的子字符串才可用。
2) 堆栈损坏错误:
如果不定义大小,您将得到一个"堆栈损坏错误",这意味着您试图写入的内容超过了分配的内容。
3) 运行您的代码:您的代码会运行,但在运行时会有未定义的行为。
http://coliru.stacked-crooked.com/a/64b881aa9f70c21d
以正确的方式执行:正如"闪电在轨道上竞赛"已经提到的那样,这就是前进的道路:
std::string str;
std::getline(std::cin, str, '.');
更多内容:http://www.cplusplus.com/reference/string/string/getline/
相关文章:
- 如何在 c++ 中使用 getline 从文件中读取字符串?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- 而循环跳过 cin.getline() 对于 C 字符串
- 使用 getline(cin, var) 两次在进行字符串比较时会产生错误 (==)
- 我的 c++ 程序似乎没有发现字符串和我拥有但输入使用 getline 的变量之间的比较
- 比较字符串的 GetLine 工作一次,然后比较之后不起作用
- 字符串和getline字符
- 如何对字符串::getline进行长度限制
- 当 getline 用于获取整个字符串时,程序崩溃
- 使用getline和字符串函数C++程序中的分段错误
- 将 int 与字符串和 getline 一起使用,没有错误
- 无法使用 getline() 输入字符串.它只读取一个字符串
- 如何使此函数使用 getline 读取字符串并使用 int 执行相同的行为?
- std::getline 读取最后一个字符串两次
- 使用 getline 读取字符串,但每行中都有换行符
- 在getline()之后获取字符串
- 使用C 中字符串标头的getline()函数将第一个char存储在字符串对象中
- 使用 getline 和字符串流检查句子中的单词是否在文件中
- 在C++中使用字符串::getline跳过行读取文件
- 如何在c++中使用字符串getline从文本文件中读取时忽略/跳过空白