int main() { string sample = "abcdef"; string result; result[0]='a'; cout<<result[0]; }
我试图将一个字符复制到字符串结果中;输出应该是一个显示。但没有显示。也没有错误消息。直接拷贝正在工作//结果=样本;这密码怎么错了?
w1jd8yoj1#
您的代码存在一些问题:1.(不是错误)尽量不要使用using namespace std;
using namespace std;
result
+=
std::cout.flush()
#include <iostream> int main() { std::string sample = "abcdef"; std::string result; result +='a'; std::cout << result << std::endl; }
产生:
Program returned: 0 Program stdout a
神箭:https://godbolt.org/z/ocvGP6333
zfciruhq2#
这将导致在访问时出现运行时错误
result[0]
因此您应该使用
result+="a";
此外,您没有在代码中使用sample变量,如果您打算将sample中的第一个字符复制到result,则可以使用
int main() { string sample = "abcdef"; string result; result+=sample[0]; cout<<result[0]; }
2条答案
按热度按时间w1jd8yoj1#
您的代码存在一些问题:
1.(不是错误)尽量不要使用
using namespace std;
result
最初是空的,所以分配给一个特定的字符位置实际上是一个bug。如果你用+=
操作符附加到它后面,那么它会像预期的那样工作。1.这应该不是问题,但在某些特定情况下,std::cout缓冲区可能不会刷新。您可以使用
std::cout.flush()
强制刷新。1.为清楚起见,始终以换行符结尾
产生:
神箭:https://godbolt.org/z/ocvGP6333
zfciruhq2#
这将导致在访问时出现运行时错误
因此您应该使用
此外,您没有在代码中使用sample变量,如果您打算将sample中的第一个字符复制到result,则可以使用