如何删除最后一个逗号? [重复]

问题描述 投票:3回答:3

程序显示数字列表。例如:

1, 3, 5, 3, 4, 3,

我需要像这样:

1, 3, 5, 3, 4, 3

我尝试了if/else声明,但它没有好处。

s.push_back(0);
cout << "s: ";
cout << 0 << ", ";
s.push_back(v[0]);
cout << s.back() << ", ";

for(int i=2; i<=10; i++) {
    s.push_back(alpha * v[i-1] + (1 - alpha) * s.back());
    if (i == s.back() - 1)
        cout << s.back() << endl;
    else
        cout << s.back() << ", " << "";

我得到了正确的输出。只是在摆脱最后一个逗号时遇到麻烦。

c++
3个回答
4
投票

如果将逗号放在除第一个元素之外的每个元素之前,您将实现此目的

 if(first){
    out << n;
    first = false;
 }else{
    out << "," << n;
 }

3
投票

通过更新分隔符变量来避免使用qazxsw poi

if

2
投票

有三种方式:

  1. 在元素前打印逗号,除非它是第一个: #include <iostream> #include <vector> #include <functional> int main() { std::vector<int> example = {1,2,3,4,5}; std::string delim = ""; for(const auto& e:example){ std::cout << delim << e; delim = ", "; } return 0; }
  2. 类似,但没有布尔值: bool first = true; for ... if (!first) cout << ", "; cout << s.back(); first = false;
  3. 检查索引: const char * prefix = ""; for ... cout << prefix << s.back(); prefix = ", "; 当在每个元素的末尾打印逗号时,索引检查也可以在最后一个元素上起作用。
  4. 打印循环外的第一个元素,其余元素将以循环中的分隔符作为前缀(请注意,这对空列表不起作用)。
© www.soinside.com 2019 - 2024. All rights reserved.