C++ For循环打印一个额外的逗号
上面的代码打印不正确。它应该打印集合B:{1,2,3},但它会打印一个额外的逗号==>集合B:{1,2,3,} 任何帮助都将不胜感激。提前谢谢 使用C++ For循环打印一个额外的逗号,c++,for-loop,C++,For Loop,上面的代码打印不正确。它应该打印集合B:{1,2,3},但它会打印一个额外的逗号==>集合B:{1,2,3,} 任何帮助都将不胜感激。提前谢谢 使用 cout<<"Set B : {"; for(i=0;i<b;i++) { cout<<setB[i]; cout<<","; } cout<<" }"<<endl; 我更改了你的算法: 意思是:输入数字,然后加逗号 现在它的意思是:如果我身后有一个数字,用逗号,然
cout<<"Set B : {";
for(i=0;i<b;i++)
{
cout<<setB[i];
cout<<",";
}
cout<<" }"<<endl;
我更改了你的算法:
意思是:输入数字,然后加逗号
现在它的意思是:如果我身后有一个数字,用逗号,然后用数字
以前,当你打印一个数字时,你总是打印一个逗号,所以你有一个额外的逗号。使用
cout<<"Set B : {";
for(i=0;i<b;i++)
{
cout<<setB[i];
cout<<",";
}
cout<<" }"<<endl;
我更改了你的算法:
意思是:输入数字,然后加逗号
现在它的意思是:如果我身后有一个数字,用逗号,然后用数字
以前,打印数字时总是打印一个逗号,因此有一个额外的逗号。循环代码打印一对数字和逗号。尝试使用此选项:
cout << "Set B : {";
for (i = 0; i < b; ++i) {
if (i > 0) cout << ",";
cout << setB[i];
}
cout << " }" << endl;
循环代码打印一对数字和逗号。尝试使用此选项:
cout << "Set B : {";
for (i = 0; i < b; ++i) {
if (i > 0) cout << ",";
cout << setB[i];
}
cout << " }" << endl;
你的循环正在执行cout你的循环正在执行cout我个人更喜欢这个解决方案。首先打印第一个元素,然后打印第二个元素
警告!:如果阵列是空的,这将不起作用。我个人更喜欢这个解决方案。首先打印第一个元素,然后打印第二个元素
警告!:如果数组为空,这将不起作用。对于For循环的每次迭代,程序将在For循环内执行所有内容。因此,循环遍历并打印集合中的每个数字,然后打印一个逗号 问题是,即使在最后一次运行循环时,它也会打印一个逗号,因为它是循环的一部分
cout <<"Set B : {" << setB[0];
for(i = 1; i < b; i++)
{
cout << ",";
cout<<setB[i];
}
cout << " }" << endl;
此代码的运行方式与此完全相同,除了最后一次运行循环的第二次,它不会打印逗号。不必太花哨 对于For循环的每次迭代,程序将在For循环内执行所有内容。因此,循环遍历并打印集合中的每个数字,然后打印一个逗号 问题是,即使在最后一次运行循环时,它也会打印一个逗号,因为它是循环的一部分
cout <<"Set B : {" << setB[0];
for(i = 1; i < b; i++)
{
cout << ",";
cout<<setB[i];
}
cout << " }" << endl;
此代码的运行方式与此完全相同,除了最后一次运行循环的第二次,它不会打印逗号。不必太花哨 如果可以使用STL,请尝试以下操作:
cout << "Set B : {";
for(i = 0; i < b; i++){
cout << setB[i];
if (i < (b-1))
cout << ",";
}
cout << " }" << endl;
如果可以使用STL,请尝试以下操作:
cout << "Set B : {";
for(i = 0; i < b; i++){
cout << setB[i];
if (i < (b-1))
cout << ",";
}
cout << " }" << endl;
我通常处理这些循环的方法是,在项目列表之间放置空格或逗号,如下所示:
#include <iterator>
#include <iostream>
int main() {
int setB[]{1,2,3};
std::cout << "Set B : { ";
for(auto i = std::begin(setB), e = std::end(setB); i != e;) {
std::cout << *i;
for(++i; i !=e; ++i) { std::cout << ", " << *i; }
}
std::cout << " }" << std::endl;
return 0;
}
0, 1, 2, 3, 4
如果要提高速度效率,可以在进入循环之前使用If输出第一项,以如下方式输出其余项:
#include <iterator>
#include <iostream>
int main() {
int setB[]{1,2,3};
std::cout << "Set B : { ";
for(auto i = std::begin(setB), e = std::end(setB); i != e;) {
std::cout << *i;
for(++i; i !=e; ++i) { std::cout << ", " << *i; }
}
std::cout << " }" << std::endl;
return 0;
}
0, 1, 2, 3, 4
我通常处理这些循环的方法是,在项目列表之间放置空格或逗号,如下所示:
#include <iterator>
#include <iostream>
int main() {
int setB[]{1,2,3};
std::cout << "Set B : { ";
for(auto i = std::begin(setB), e = std::end(setB); i != e;) {
std::cout << *i;
for(++i; i !=e; ++i) { std::cout << ", " << *i; }
}
std::cout << " }" << std::endl;
return 0;
}
0, 1, 2, 3, 4
如果要提高速度效率,可以在进入循环之前使用If输出第一项,以如下方式输出其余项:
#include <iterator>
#include <iostream>
int main() {
int setB[]{1,2,3};
std::cout << "Set B : { ";
for(auto i = std::begin(setB), e = std::end(setB); i != e;) {
std::cout << *i;
for(++i; i !=e; ++i) { std::cout << ", " << *i; }
}
std::cout << " }" << std::endl;
return 0;
}
0, 1, 2, 3, 4
另一种方式,无需额外分支:
int main()
{
int n;
std::cin >> n;
int i = 0;
if(i < n) // check for no output
std::cout << i;
for(++i; i < n; ++i) // rest of the output (if any)
std::cout << ", " << i; // separate these
}
另一种方式,无需额外分支:
int main()
{
int n;
std::cin >> n;
int i = 0;
if(i < n) // check for no output
std::cout << i;
for(++i; i < n; ++i) // rest of the output (if any)
std::cout << ", " << i; // separate these
}
我真的很喜欢推广使用a来编写声明性代码,而不是以命令式风格嵌套for if语句
std::cout << "Set B : {";
const char* sep = "";
for (const auto& e : setB) {
std::cout << sep << setB[i];
sep = ", ";
}
std::cout <<" }" << std::endl;
我真的很喜欢推广使用a来编写声明性代码,而不是以命令式风格嵌套for if语句
std::cout << "Set B : {";
const char* sep = "";
for (const auto& e : setB) {
std::cout << sep << setB[i];
sep = ", ";
}
std::cout <<" }" << std::endl;
为什么您希望打印的逗号少于元素?可能的重复为什么您希望打印的逗号少于元素?可能的重复也会打印一个额外的逗号。不幸的是,这会在每个元素后打印逗号。请看,有一个带有自定义迭代器的解决方案。有一个std::experimental::ostream joiner,可以与std::copy一起使用来打印它。它还打印一个额外的逗号。不幸的是,这会在每个元素后打印逗号。请看,有一个使用自定义迭代器的解决方案有一个std::experimental::ostream joiner,可以与std::copy一起使用来打印此文件。+1在这种情况下工作得很好,但通常必须小心-如果setB为空,setB[0]将是未定义的行为。+1在这种情况下工作得很好,但在一般情况下必须小心-setB[0]如果setB为空,则为未定义行为。同意。我在这里列出的代码没有经过任何优化。只是为了澄清我的解释。我同意。我在这里列出的代码没有经过任何优化。只是为了澄清我的解释。