c++ - 这些垃圾值从何而来?

标签 c++ string

我编写了这个函数来反转字符串中单词的顺序,该函数的行为符合预期,直到它读取了两个单词然后开始出现意外行为:

string ReverseString(string InputString){

int EndOfGroup = 0;

string ReversedString = " ";
int k = 0;

ReversedString.resize(InputString.size());
for (int i = InputString.length();  i > 0; i--){
    if (isspace(InputString[i]))
    {           
        EndOfGroup = i;

        for (int j = i; j >= EndOfGroup && j < InputString.length(); j++)
        {

            ReversedString[k] = InputString[j] ;
            k++;

        }
    }

}

我所说的行为出乎意料的意思是,一旦我将字符串传递给函数,它就会开始用垃圾值填充 ReversedString 变量,直到超出范围。

这就是程序崩溃的原因:

InputString "the brown fox died"    
ReversedString  " died fox died brownÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««îþîþ"  
j   9   
i   3
EndOfGroup  3   
k   20

这不是一个重复的问题,因为我的方法与现有的方法不同。

最佳答案

想想内循环,

for (int j = i; j >= EndOfGroup && j < InputString.length(); j++)

对于第一个词,这很好,现在对于第二个词 - 条件是否正确?

请记住,您正在使用递增索引k...写入反转的字符串...

关于c++ - 这些垃圾值从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37727074/

相关文章:

c++ - C++ 标准库是否有用于 printf 转换说明符的模板化 getter?

c++ - 我可以在不提供真实模板参数的情况下使用 static_assert 吗?

PHP 检查升序/降序数字

python - 如何从特定字母开始并在遇到数字时结束?

c++ - 如何修复使用 std::cin 函数后从文件读取的问题

c++ - 在 C++ 中释放指针两次或更多次时会发生什么?

c++ - 在 Qt 类实例中访问(非指针)成员变量时出现段错误

python - 检测空格并应用于变量

java - 将一串多个句子拆分成单个句子,并用 html 标签包围它们

c - C语言输入字符串如何加下划线