【发布时间】:2010-06-02 13:03:08
【问题描述】:
当我从std::cin 中读取一个char* 并想将其写入std::cout 时,它会打印直到在内存中找到\0。所以做了什么:
char c;
cin >> c;
char* pChar = &c;
pChar++;
*pChar = '\0';
println(&c); // My own method: void println(char * str) { cout << str << endl; }
但我认为这不是一个安全的操作。
有没有更安全的方法来做到这一点?
【问题讨论】:
-
我想在回答之前先了解您想要达到的目标。如果您只是想从 cin 复制到 cout,您的代码看起来太复杂了。
-
您的代码是未定义行为。您正在堆栈中创建一个变量,然后创建一个指向它的指针,最后覆盖保留空间之外的地址。你的代码不仅不安全,而且是错误的。
标签: c++ pointers char iostream