【发布时间】:2020-11-03 22:50:41
【问题描述】:
这是我的代码,它只是颠倒了句子:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string sentence;
string reversedSentence;
int i2 = 0;
cout << "Type in a sentence..." << endl;
getline(cin, sentence);
for (int i = sentence.length() - 1; i < sentence.length(); i--)
{
reversedSentence[i2] = sentence[i];
i2++;
}
cout << reversedSentence << endl;
}
编译工作正常,但是当我尝试运行程序时,会发生这种情况:
Type in a sentence...
[input]
/home/keith/builds/mingw/gcc-9.2.0-mingw32-cross-native/mingw32/libstdc++-v3/include/bits/basic_string.h:1067: std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator[](std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::reference = char&; std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::size_type = unsigned int]: Assertion '__pos <= size()' failed.
【问题讨论】:
-
检查你的 for 循环条件。
-
i < sentence.length()即使对于i的负值也是如此 -
我们是在反向说完整的,还是只是倒序的单词?
-
您应该在
reversedSentence中分配空间,然后再将其视为数组。默认声明的字符串是空的。
标签: c++ gcc compiler-errors g++ mingw