提问人:RadiateSenga 提问时间:6/24/2023 更新时间:6/24/2023 访问量:58
C++ 不会打印定义为“字符串 s(n,k);”然后调整大小的字符串
C++ doesnt print a string defined as "string s(n,k);" and then resized
问:
我正在尝试这段代码,但它没有打印任何东西:| ,有什么问题?
string bitmask(3, 1);
bitmask.resize(5, 0);
cout << bitmask;
PS:我是 c++ 的新手(我来自 python)
顺便说一句,代码打印其他字符串定义为string s="string";
答:
0赞
RadiateSenga
6/24/2023
#1
如果我使用“1”或“0”而不是 1 或 0,则打印字符串。但是代码:(不再正常工作。
void comb(int N, int K)
{
std::string bitmask(K, 1); // if I write bitmask(K,'1') it doesnt work
bitmask.resize(N, 0); // if I write bitmask.resize(N,'0') it doesnt work
std::cout << bitmask // this doesnt print anything
// print integers and permute bitmask
do {
for (int i = 0; i < N; ++i) // [0..N-1] integers
{
if (bitmask[i]) std::cout << " " << i;
}
std::cout << std::endl;
} while (std::prev_permutation(bitmask.begin(),bitmask.end()));
}
此代码必须打印 n 个数字 [0,1,2,...,n-1] 列表的所有组合。如果我写“0”而不是 0,它就不再有效了
评论
2赞
john
6/24/2023
那应该是 或if (bitmask[i] == '1')
if (bitmask[i] != '0')
0赞
Retired Ninja
6/24/2023
这不是一个答案。您应该编辑您的问题以包含此代码。
1赞
john
6/24/2023
字符,布尔值和整数,不知道Python,但在C++中它们都是不同的东西。
0赞
RadiateSenga
6/24/2023
@RetiredNinja很抱歉,我的第一个线程是在 StOv 上打开的。
0赞
RadiateSenga
6/24/2023
@john是的,我明白了。但是,如果我写 0 和 1(而不是“0”和“1”),但只是它不打印字符串,为什么代码仍然有效?
评论
1
和 ' 是两回事。第一个是整数,第二个是字符。你想在用字符串做事时使用这个字符。'1
std::string bitmask(3, '1'); bitmask.resize(5, '0');
'1'
'0'