Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么字符串没有得到更新并且不';最后不要打印任何东西_C++_Cppcheck - Fatal编程技术网

C++ 为什么字符串没有得到更新并且不';最后不要打印任何东西

C++ 为什么字符串没有得到更新并且不';最后不要打印任何东西,c++,cppcheck,C++,Cppcheck,代码: #include <iostream> using namespace std; int main() { string message, rMessage; getline(cin,message); for(int i=0;i<message.length();i++) { if( (message[i]>='a' && message[i]<='z') || (message[i]>='A' &&

代码:

#include <iostream>
using namespace std;

int main() {

string message, rMessage;
getline(cin,message);

for(int i=0;i<message.length();i++) {

if( (message[i]>='a' && message[i]<='z') ||
    (message[i]>='A' && message[i]<='Z') ||
    (message[i]>='0' && message[i]<='9') ) {

  rMessage[i] = message[i];
}
else {
    continue;
     }
 }
    cout<<"Removed: "<<rMessage;
} 
#包括
使用名称空间std;
int main(){
字符串消息,rMessage;
getline(cin,message);
对于(int i=0;i='a'&&message[i]='a'&&message[i]='0'&&message[i]
我们必须做什么来解决这个问题

改变

rMessage[i] = message[i];


原因在您问题的评论部分给出。

请不要使用标记发送垃圾邮件,尤其是不相关语言的标记。当您分配给不存在的元素时,字符串不会神奇地扩展。相反,行为是未定义的,任何事情都可能发生。至于您的问题,请考虑
rMessage
…的大小永远不要在任何地方设置它的大小,所以它的任何索引都将超出界限,导致不明确的行为。最后,请阅读有关函数。C++有许多很好的功能,例如有条件地将容器的元素复制到另一个容器(可以用它代替当前的循环)。不要<代码>操作符[]。
分配给
rmessage
,因为它还没有预留容量。而是使用或
rMessage += message[i];