以下是代码:
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int keyArray[7] = {1,2,3,4,5,6,7};
int breakPoint;
int counter;
for (counter = 0; counter < 7; counter++)
{
// keyArray[counter] = (rand() % 9) + 1; later
keyArray[counter] = counter; //testing
}
cout << keyArray[0] + "\n";
cout << keyArray[1] + "\n";
cout << keyArray[2] + "\n";
cout << keyArray[3] + "\n";
cout << keyArray[4] + "\n";
cout << keyArray[5] + "\n";
cout << keyArray[6] + "\n";
cin >> breakPoint; //so I can see what the hell is going on before it disappears
return 0;
}
我给keyArray赋值的唯一原因是我在回答一个类似的问题时,你必须先使用数据初始化数据才能使用它。但它没有任何区别。无论你是否初始化,输出都只是垃圾符号。
编译器是Visual Studio Community 2017.感谢您的帮助。
答案 0 :(得分:2)
错误不在您的逻辑中,而是在您的调试输出中。由于其他答案集中在如何解决它,我宁愿解释发生了什么。关于字符串在C ++中的工作方式似乎存在误解。
失败就在这个操作中:
keyArray[0] + "\n"
在内部,字符串文字是字符数组,在本例中为const char[2]
,由换行符和终止'\0'
null终止符组成。然后,当您尝试将整数和此数组一起添加时,数组将由指向其第一个元素的指针表示,即它将衰减到const char*
以便用作代码中使用的plus operator
的第二个参数。
因此,对于编译器,此行需要operator+(int, const char*)
。但结果是const char*
,输入指针偏移整数,因为这是向指针添加整数时发生的操作。
因此,不是打印数字,而是打印字符串,它将尝试访问一个不存在的字符串,因为指针现在指向字符串&#34; \ n&#34;因此进入一些任意的记忆。
答案 1 :(得分:0)
而不是做
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int keyArray[7] = {1,2,3,4,5,6,7};
int breakPoint;
int counter;
for (counter = 0; counter < 7; counter++)
{
// keyArray[counter] = (rand() % 9) + 1; later
keyArray[counter] = counter; //testing
}
cout << std::to_string(keyArray[0]) + "\n";
cout << std::to_string(keyArray[1]) + "\n";
cout << std::to_string(keyArray[2]) + "\n";
cout << std::to_string(keyArray[3]) + "\n";
cout << std::to_string(keyArray[4]) + "\n";
cout << std::to_string(keyArray[5]) + "\n";
cout << std::to_string(keyArray[6]) + "\n";
cin >> breakPoint; //so I can see what the hell is going on before it disappears
return 0;
}
做的:
cout << keyArray[0] + "\n"
或
cout << keyArray[0] << "\n"
您不能使用字符串连接整数。这就是你输入垃圾的原因
答案 2 :(得分:0)
首先尝试:
cout << keyArray[0] << "\n";
如果您使用的是支持C++ 11
的编译器,请在添加前尝试使用std::to_string(...)从整数中创建一个字符串:
cout << (std::to_string(keyArray[0]) + "\n");
答案 3 :(得分:0)
你不能用字符串连接int。
更改
cout << keyArray[0] << "\n"
<< keyArray[1] << "\n"
<< keyArray[2] << "\n"
<< keyArray[3] << "\n"
<< keyArray[4] << "\n"
<< keyArray[5] << "\n"
<< keyArray[6] << endl;
到
{{1}}
答案 4 :(得分:-1)
您需要将整数转换为字符串。使用相对较新版本的C ++:
$('#txt_ssn').on('change focus', function(){
if ($(this).val().trim().length === 0) {
$(this).mask("999-99-9999");
}
});