如何以简单的方式从C++中的循环中删除最后一个逗号?

Tal*_*ani 4 c++ comma while-loop

该程序用于打印素数直到输入给定并用逗号分隔每个素数.

void main(){

    int N, counter=0, isPrime;

    int k, j;

    cout << "Enter maximum range: ";

    cin >> N;

    for (j=2; j<=N; j++){

        isPrime = 0;
        k = 2;

        while (k<j){

            if (j%k==0){

                isPrime++;
            }
            k++;
        }
        if (isPrime==0){

            if (k==N){
                cout << j;
            }
            else{
                cout << j << ",";
            }
            counter++;
        }
    }
    cout << endl;
    system("pause");
}
Run Code Online (Sandbox Code Playgroud)

它只删除素数输入的最后一个逗号,而不是任何其他输入.我怎样才能解决这个问题?

Input: 23
Output: 2,3,5,7,11,13,17,19,23
Input: 8
Output: 2,3,5,7,
Input: 9
Output: 2,3,5,7,
Run Code Online (Sandbox Code Playgroud)

小智 20

没有必要if then else这么多:

std::string delim = "";
for( auto item : vec )
{
   std::cout << delim << item;
   delim = ",";
}
Run Code Online (Sandbox Code Playgroud)

所有情况都不需要检查,例如向量是否为空.

如果您在开头接受额外的空间,只需将字符串替换为char,然后性能将进一步提高.


Ben*_*Ben 5

不要删除最后一个逗号.而是每个条目之前插入逗号,第一个条目除外.