C++ C++;如何将其拆分为向量并使用它
可能重复:C++ C++;如何将其拆分为向量并使用它,c++,split,C++,Split,可能重复: 我用C++做客户端服务器编程。 我的客户机发送一个带值的字符串 string receiveClient = "auth#user:pass"; 如何将receiveClient变量拆分为“#”和”:“作为分隔符 我已经尝试使用我在网上找到的这个功能 vector split (const string &s,char delim) { vector string elems; return(s,delim,elems); } 我是在main()上这样做的:
我用C++做客户端服务器编程。 我的客户机发送一个带值的字符串
string receiveClient = "auth#user:pass";
如何将receiveClient
变量拆分为“#”
和”:“
作为分隔符
我已经尝试使用我在网上找到的这个功能
vector split (const string &s,char delim)
{
vector string elems;
return(s,delim,elems);
}
我是在main()
上这样做的:
但它给我的回报如下
server.cpp: In function ‘int main()’:
server.cpp:128:8: error: missing template arguments before ‘x’
server.cpp:128:8: error: expected ‘;’ before ‘x’
root@ubuntu:/home/baoky/csci222_assn2# g++ server server.cpp
server.cpp:47:1: error: invalid use of template-name ‘std::vector’ without an argument list
server.cpp: In function ‘int main()’:
server.cpp:128:8: error: missing template arguments before ‘x’
server.cpp:128:8: error: expected ‘;’ before ‘x’
谢谢你的帮助。非常感谢您在网上找到的代码是垃圾。试试这个
#include <vector>
#include <string>
using namespace std;
vector<string> split(const string& s, char delim)
{
vector<string> elems(2);
string::size_type pos = s.find(delim);
elems[0] = s.substr(0, pos);
elems[1] = s.substr(pos + 1);
return elems;
}
你在网上找到的代码是垃圾。试试这个
#include <vector>
#include <string>
using namespace std;
vector<string> split(const string& s, char delim)
{
vector<string> elems(2);
string::size_type pos = s.find(delim);
elems[0] = s.substr(0, pos);
elems[1] = s.substr(pos + 1);
return elems;
}
<>这些任务通常最容易使用C++中的流来完成。像这样的方法应该会奏效:
// Beware, brain-compiled code ahead!
#include <vector>
#include <string>
#include <sstream>
std::vector<string> splitClientAuth(const std::string& receiveClient)
{
// "auth#user:pass"
std::istringstream iss(receiveClient);
std::vector<std::string> strings;
strings.resize(3);
std::getline(iss, strings[0], '#');
std::getline(iss, strings[1], ':');
std::getline(iss, strings[2]); // default is '\n'
if( !iss && !iss.eof() )
throw "Dude, you badly need an error handling strategy!";
if( string[0].empty() || string[1].empty() || string[2].empty() )
throw "Watcha gonna do now?";
return strings;
}
//当心,brain提前编译了代码!
#包括
#包括
#包括
std::vector splitClientAuth(const std::string和receiveClient)
{
//“验证#用户:通过”
std::istringstream iss(接收客户端);
std::向量字符串;
字符串。调整大小(3);
std::getline(iss,字符串[0],“#”);
std::getline(iss,strings[1],“:”);
std::getline(iss,strings[2]);//默认值为“\n”
如果(!iss&&!iss.eof())
抛出“老兄,你急需一个错误处理策略!”;
如果(字符串[0]。空()| |字符串[1]。空()| |字符串[2]。空()
抛出“Watcha现在该怎么办?”;
返回字符串;
}
还有几点值得注意:
- 那些真的是纯文本密码吗
- 在
中使用这一点对我来说似乎是可疑的。如果这是我的代码,我希望一个数据结构来存储用户信息,并将发现的内容写入其中std::vector
- 从你完全不理解你在问题中粘贴的代码(Martinho是对的,这太糟糕了,它是否仍然可以被认为是C++)以及从你的评论来看,你似乎非常需要一个
这些任务通常最容易使用C++中的流来完成。像这样的方法应该会奏效:
// Beware, brain-compiled code ahead!
#include <vector>
#include <string>
#include <sstream>
std::vector<string> splitClientAuth(const std::string& receiveClient)
{
// "auth#user:pass"
std::istringstream iss(receiveClient);
std::vector<std::string> strings;
strings.resize(3);
std::getline(iss, strings[0], '#');
std::getline(iss, strings[1], ':');
std::getline(iss, strings[2]); // default is '\n'
if( !iss && !iss.eof() )
throw "Dude, you badly need an error handling strategy!";
if( string[0].empty() || string[1].empty() || string[2].empty() )
throw "Watcha gonna do now?";
return strings;
}
//当心,brain提前编译了代码!
#包括
#包括
#包括
std::vector splitClientAuth(const std::string和receiveClient)
{
//“验证#用户:通过”
std::istringstream iss(接收客户端);
std::向量字符串;
字符串。调整大小(3);
std::getline(iss,字符串[0],“#”);
std::getline(iss,strings[1],“:”);
std::getline(iss,strings[2]);//默认值为“\n”
如果(!iss&&!iss.eof())
抛出“老兄,你急需一个错误处理策略!”;
如果(字符串[0]。空()| |字符串[1]。空()| |字符串[2]。空()
抛出“Watcha现在该怎么办?”;
返回字符串;
}
还有几点值得注意:
- 那些真的是纯文本密码吗
- 在
中使用这一点对我来说似乎是可疑的。如果这是我的代码,我希望一个数据结构来存储用户信息,并将发现的内容写入其中std::vector
- 从你完全不理解你在问题中粘贴的代码(Martinho是对的,这太糟糕了,它是否仍然可以被认为是C++)以及从你的评论来看,你似乎非常需要一个
#include
,#include
和一个使用名称空间std的代码>某个地方。我如何运行我尝试过的代码vector x=split(&receiveClient,“#”);EWW,使用名称空间std
@john:。我写了数十万行代码,可能引入了数万个bug。但是我从来没有遇到过由使用名称空间std引起的bug。这不是问题。。。。它可能需要一个#include
,#include
和一个使用名称空间std的代码>某个地方。我如何运行我尝试过的代码vector x=split(&receiveClient,“#”);EWW,使用名称空间std
@john:。我写了数十万行代码,可能引入了数万个bug。但是我从来没有遇到过由使用名称空间std引起的bug。这不是问题。