char* and cin in C++
char* and cin in C++
我想使用cin向char *变量输入一个不确定长度的字符串;
我可以这样做:
char * tmp = "My string";
cout << tmp << endl;
system("pause");
效果很好。
但是我没有做到:
char * tmp
cin >> tmp;
你能告诉我怎么回事吗"
好吧,您还没有为char*
创建一个指向的对象。
char* tmp = new char[MAX_LENGTH];
应该使它更好地工作(您必须定义MAX_LENGTH)。另一种方法是:
std::string strtmp;
cin >> strtmp;
const char* tmp = strtmp.c_str();
这个方法意味着你不需要使用new
几个问题:
char * tmp
cin >> tmp;
tmp没有被分配(它目前是随机的)。
operator>>
(当与char*或string一起使用时)读取单个(空格分隔)单词。
问题1:
如果您使用char*
并分配缓冲区,那么您可能没有分配足够的空间。读取操作可能读取的字符多于缓冲区中可用的字符。一个更好的主意是使用std::string(从中你可以得到一个C-String)。
问题2:
无法读取不确定的字符串。但是您可以使用std::getline
一次读取一行。
std::string line;
std::getline(std::cin, line);
char* str = line.data();
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- std::async from std::async in windows xp