小编its*_*ani的帖子

C ++比较并替换stringstream的最后一个字符

我想检查以下内容:

  1. 如果追加到的最后一个字符stringstream是逗号。
  2. 如果是,将其删除。

std::stringstream str;
str << "["
//loop which adds several strings separated by commas

str.seekp(-1, str.cur); // this is to remove the last comma before closing bracket

str<< "]";
Run Code Online (Sandbox Code Playgroud)

问题是如果循环中未添加任何内容,则会从字符串中删除左括号。因此,我需要一种方法来检查最后一个字符是否为逗号。我这样做是这样的:

if (str.str().substr(str.str().length() - 1) == ",")
{
    str.seekp(-1, rteStr.cur);
}
Run Code Online (Sandbox Code Playgroud)

但是我对此并不很好。有一个更好的方法吗?

关于循环:

循环用于标记通过套接字接收的一组命令,并将其格式化以通过另一个套接字发送给另一个程序。每个命令以一个OVER标志结尾。

std::regex tok_pat("[^\\[\\\",\\]]+");
std::sregex_token_iterator tok_it(command.begin(), command.end(), tok_pat);
std::sregex_token_iterator tok_end;
std::string baseStr = tok_end == ++tok_it ? "" : std::string(*tok_it);
while (baseStr == "OVER")
{
    //extract command parameters
    str << "extracted_parameters" << "," …
Run Code Online (Sandbox Code Playgroud)

c++ regex stringstream

2
推荐指数
1
解决办法
1185
查看次数

标签 统计

c++ ×1

regex ×1

stringstream ×1