2013-02-22 137 views
0

我有一個採用C++風格字符串的函數。我想要將argv[1]放入一個C++字符串中,或​​者直接將它傳遞給我的函數。用argv初始化C++字符串

#include <iostream> 
#include <string> 
using namespace std; 

string rev (string &reverse); 

int main(int argc, char argv[]) 
{ 
if (argc != 2) 
    cout << "Bad Input" << endl; 
string reverse = argv[1]; 
cout << rev(reverse) << endl; 
} 

這是我到目前爲止,但我這樣做的時候,我得到以下錯誤:

8.4.cpp: In function ‘int main(int, char*)’: 
8.4.cpp:11: error: invalid conversion from ‘char’ to ‘const char*’ 
8.4.cpp:11: error: initializing argument 1 of ‘std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]’ 
+13

使用'字符* argv的[]' – Erik 2013-02-22 23:16:19

+0

@Erik謝謝。 – MarJamRob 2013-02-22 23:17:40

回答

5

修復主要

int main(int argc, char argv[]) 

// should be 

int main(int argc, char * argv[]) 
     ///   ^^^^^ 
+1

完全一樣,但我更喜歡這種語法: 'int main(int argc,char ** argv)' – 2013-02-25 07:36:07

0

如前所述argv[]是一個指針,一塊內存,或一個「指針指針」。 您只需將*添加到argv[]即可。

快速谷歌帶來了THIS

+1

不,argv是一個指針數組。 – 2013-02-23 07:54:02

+0

+1是的,它是一個指向指針的指針。 * argv []與** argv相同。它不能用作指向數組的指針,(IE不可用(* argv)[0])。儘管可以同時查看它(指向指針的指針,指向數組的指針)。由於數組只是一個指針。 – Mitch 2013-02-23 20:35:05

+1

啊,不完全......這是一塊內存,在第一次機會時退化爲指針。微妙地不同... – 2013-02-23 20:48:01