输出输入的拼接版本
Outputting spliced version of input
#include <iostream>
#include <string>
using namespace std;
int main()
{
char name[256];
cout << "Enter your name: ";
cin.getline (name,256);
for(int i = 0; i < 50; i++)
{
cout << name[i];
if (name[i] == 'n')
break;
}
cout << endl;
return(0);
}
输入你的名字:My name is Sean
一旦我这样做,它输出"我的名字是Sean",但之后是一堆无意义的疯狂符号。
为什么在Sean中n之后没有停止?因为这里有一个' n'字符。至少我是这么认为的。
所有,我想要的是输出name中的每个字符一次一个符号,当它到达行尾时停止,这样当数组实际上小得多时它就不必转到256
我的代码有什么问题?
cin.getline
从输入缓冲区中读取换行符(或您指定的任何分隔符),但不将其包含在生成的字符串中,因此您将读取超过已读取数据的末尾,直到遇到恰好包含对应于换行符的值的下一个字节(通常为10)。
直接写在一起就容易多了:cout << name;
From documentation:
字符被提取,直到已提取(n - 1)个字符或者找到分隔字符(如果此参数为指定,否则为'n')。的如果结束,提取也会停止文件在输入序列中被到达或者在输入过程中出现错误操作。
如果找到分隔符,则为提取并丢弃,即不储存和下次输入之后将开始操作。如果你我不希望这个角色是提取后,可以使用成员get相反。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 如何正确实现与基类不同的版本?
- 从预处理器获取 Windows 版本(C++ Win32)
- 表达式 SFINAE:如何根据类型是否包含具有一个或多个参数的函数来选择模板版本
- 如何在C++中将 Python 字符串转换为其转义版本?
- 输出输入的拼接版本