C ++如何将argv作为字符串保存到向量
C++ How do I save argv to vector as strings
我试图将 argv 作为字符串保存到向量中,但我不断收到错误消息:see reference to function template instantiation 'std::vector<_Ty>::vector<_TCHAR*[]>(_Iter,_Iter)' being compiled
我已经试过了Save argv to vector or string但还是不行
我使用的是 Microsoft Visual Studio 2010。
这是我的代码:
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<std::string> allArgs(argv + 1, argv + argc);
return 0;
}
问题是 std::string
没有 _TCHAR*
类型的构造函数,因此您无法从 _TCHAR*
的数组生成字符串向量。
尝试使用@NathanOliver 所说的 "normal" 版本的主要版本:int main(int argc, char *argv[])
.
或切换到std::wstring
。
注意:如果不启用 unicode 进行编译,_TCHAR*
可能等同于 char *
,代码不会引发任何编译器错误。
使用这个:
typedef std::basic_string<TCHAR> tstring;
// Or:
// using tstring = std::basic_string<TCHAR>;
// If you have latest compiler
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<tstring> allArgs(argv + 1, argv + argc);
return 0;
}
如果您总是想使用宽字符串,请使用这个
int wmain(int argc, whar_t* argv[])
{
std::vector<std::wstring> allArgs(argv + 1, argv + argc);
return 0;
}
或者,如果您只想使用 ANSI(我不推荐),只需使用旧样式 char
和 main
。
我试图将 argv 作为字符串保存到向量中,但我不断收到错误消息:see reference to function template instantiation 'std::vector<_Ty>::vector<_TCHAR*[]>(_Iter,_Iter)' being compiled
我已经试过了Save argv to vector or string但还是不行
我使用的是 Microsoft Visual Studio 2010。
这是我的代码:
#include "stdafx.h"
#include <string>
#include <vector>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<std::string> allArgs(argv + 1, argv + argc);
return 0;
}
问题是 std::string
没有 _TCHAR*
类型的构造函数,因此您无法从 _TCHAR*
的数组生成字符串向量。
尝试使用@NathanOliver 所说的 "normal" 版本的主要版本:int main(int argc, char *argv[])
.
或切换到std::wstring
。
注意:如果不启用 unicode 进行编译,_TCHAR*
可能等同于 char *
,代码不会引发任何编译器错误。
使用这个:
typedef std::basic_string<TCHAR> tstring;
// Or:
// using tstring = std::basic_string<TCHAR>;
// If you have latest compiler
int _tmain(int argc, _TCHAR* argv[])
{
std::vector<tstring> allArgs(argv + 1, argv + argc);
return 0;
}
如果您总是想使用宽字符串,请使用这个
int wmain(int argc, whar_t* argv[])
{
std::vector<std::wstring> allArgs(argv + 1, argv + argc);
return 0;
}
或者,如果您只想使用 ANSI(我不推荐),只需使用旧样式 char
和 main
。