我是C++的新手,我試圖編寫一個簡單的字符串反向程序。當我編譯它時,一切正常,但是當我運行它時,出現以下錯誤:C++給我basic_string :: _ S_construct null在我運行我的程序後無效錯誤
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
Aborted (core dumped)
我在做什麼錯?這是我的代碼。
#include <iostream>
using namespace std;
string reverse_string(char* argv[], int i);
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; i++)
{
cout << reverse_string(argv, i) << endl;
}
return 0;
}
string reverse_string(char* argv[], int i)
{
string arg = argv[i + 1];
string output;
int length = arg.length();
for (int index = 1; index <= length; index++)
{
output += arg[length-index];
}
return output;
}
您分配一個nullptr字符串這是無效的,最有可能的是'的argv [I + 1]'。看到它[live](http://coliru.stacked-crooked.com/a/6abd8a3807f8a528)。 –
這個錯誤是因爲你試圖在某個時候從一個空的char *構造'std :: string'。 – juanchopanza
'argv [argc]'發生在你最後一次迭代時,是一個空指針。 – chris