如何在c ++中将“12 | 34 | 56 | 78”等字符串转换为12,34,56,78的输出

时间:2017-11-20 11:52:30

标签: c++ arrays string string-parsing

我必须创建一个带有字符串的Convert构造函数。该字符串将整数保存为字符串,数字由字符|分隔。例如,如果参数是以下字符串“12 | 34 | 56 | 78”,则生成的对象将具有以下值:12,34,56和78。

for(int i=0; i<8; i++)
{
    if(s[i]!='|')
        cout<<s[i]<<s[i+1]<<", ";

}

这是我到目前为止所做的,但我得到的输出是“12,| 2,34,| 3 ..”我怎么做它“12,34,56,78”?

7 个答案:

答案 0 :(得分:2)

按原样,即使|条件为if,您也会打印true字符。使用您的方法将代码修改为:

std::string s = "12|34|56|78";
for (std::size_t i = 0; i < s.size(); i++)  {
    if (s[i] == '|') {
        std::cout << ", ";
    }
    else {
        std::cout << s[i];
    }
}

如果您想修改字符串本身,请合并std::string::findstd::string::replace函数,如Shreevardhan's answer所示。

答案 1 :(得分:2)

只需查找并替换所有

即可
npm install -g npm@latest

或者,如果你有一个C风格的字符串,只想要所需的输出

std::string s("12|34|56|78");
for (auto f = s.find('|'); f != string::npos; f = s.find('|')) {
    s.replace(f, 1, ", ");
}
std::cout << s << std::endl;

答案 2 :(得分:1)

如果您想将带有'|'的字符串更改为带有','的字符串,您可以尝试使用标准中的函数replace

std::replace( s.begin(), s.end(), '|', ',');

答案 3 :(得分:0)

您需要创建的是字符串拆分方法:

//Split string -- reusable
vector<string> splitString(string str, string delimiter)
{
  vector<string>v;
  string token;
  size_t pos = 0;

  while((pos = str.find(delimiter)) != string::npos)
    {
      token = str.substr(0, pos);
      v.push_back(token);
      str.erase(0, str.find(delimiter) + delimiter.length());
    }
  v.push_back(str);
  return v;
}

所以使用'|'作为分隔符,你会得到以下结果:)!

答案 4 :(得分:0)

如果你只是使用STL,你就不会使用循环。

#include <iostream>
#include <string>
#include <algorithm>
int main() {
    std::string s = “12|34|56|78”;
    std::replace(s.begin(),s.end(),'|',',');
    std::cout << s << '\n';
    return 0;
}

如果你有时间,请听Stephan T. Lavavej的STL讲座。他们很有趣! Link

答案 5 :(得分:0)

如果你只想要一个带有你指定输出的新字符串,你可以像替换分隔符一样简单。(你也可以复制新的字符串并修改)

#include<bits/stdc++.h>
using namespace std;

int main()
{
string str="12|34|5|100";

 for(int i=0;i<str.length();i++)
 {
  if(str[i]=='|')
    str[i]=',';
 }

    cout<<str<<endl;
    return 0;
}

答案 6 :(得分:-1)

看看strtok。这是一个标准的库函数。

引用来源:

char * strtok ( char * str, const char * delimiters );对此函数的一系列调用将str拆分为标记,标记是由分隔符中的任何字符分隔的连续字符序列。

/* strtok example */
#include <stdio.h>
#include <string.h>

int main ()
{
  char str[] ="- This, a sample string.";
  char * pch;
  printf ("Splitting string \"%s\" into tokens:\n",str);
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    printf ("%s\n",pch);
    pch = strtok (NULL, " ,.-");
  }
  return 0;
}