C++ 将多个数字拆分为单个数字的数组输入(线性搜索) #包括 使用名称空间std; 模板类线性{ 私人: T*a; T键; int n; 公众: 线性(); 无效LS(); }; 模板线性::线性(){ a=新的T[10]; cout>n; cout>a[i]; cout>键; } 模板void Linear::LS(){ int标志=0,i; 对于(i=0;i>a的行为不同于cin>>a是int时a的行为。还有其他关于这个主题的答案。例如,我根据@brc dd更新了OP的问题以澄清对预期的正确观察。 2 2 27 27 27 27
问题(感谢@brc dd的澄清)是C++ 将多个数字拆分为单个数字的数组输入(线性搜索) #包括 使用名称空间std; 模板类线性{ 私人: T*a; T键; int n; 公众: 线性(); 无效LS(); }; 模板线性::线性(){ a=新的T[10]; cout>n; cout>a[i]; cout>键; } 模板void Linear::LS(){ int标志=0,i; 对于(i=0;i>a的行为不同于cin>>a是int时a的行为。还有其他关于这个主题的答案。例如,我根据@brc dd更新了OP的问题以澄清对预期的正确观察。 2 2 27 27 27 27,c++,search,C++,Search,问题(感谢@brc dd的澄清)是cin在字符类型上的行为与直觉相反。它一次只读取一个字符,而不是像对待数字一样对待字符,而在所有其他方面都是如此。下面的代码演示了这一事实 #include <iostream> #include <stdint.h> #include <sstream> using namespace std; int main(){ std::stringstream ss("27"); int8_
cin
在字符类型上的行为与直觉相反。它一次只读取一个字符,而不是像对待数字一样对待字符,而在所有其他方面都是如此。下面的代码演示了这一事实
#include <iostream>
#include <stdint.h>
#include <sstream>
using namespace std;
int main(){
std::stringstream ss("27");
int8_t v_int8;
char v_char;
int v_int;
long v_long;
short v_short;
ss >> v_int8;
std::cout << v_int8 << std::endl;
ss.seekg(0);
ss >> v_char;
std::cout << v_char << std::endl;
ss.seekg(0);
ss >> v_int;
std::cout << v_int << std::endl;
ss.seekg(0);
ss >> v_int;
std::cout << v_int << std::endl;
ss.seekg(0);
ss >> v_short;
std::cout << v_short << std::endl;
ss.seekg(0);
ss >> v_long;
std::cout << v_long << std::endl;
ss.seekg(0);
}
请注意,即使您试图变得聪明,并使用int8\t
,它实际上只是char
的别名,并且会逐字读取,而不是像您可能假设的那样以数字的形式读取
注:
stringstream
类似于使用cin
,不同之处在于输入来自字符串而不是用户输入。ss.seekg(0)
只将流放回字符串的开头。将其设置为线性l;
而不是char
。此外,如果您对编程非常陌生,最好现在不要使用模板,除非您正确理解模板的用途和工作方式。我将其标记为键入错误,因为这不可能有助于将来的重新编写aders@brc dd事实上,代码没有任何问题(除了典型的新手风格之外)但它确实有效。通过一些小的修改来跟踪正在发生的事情。如果某些事情不起作用,请提供您给程序的所有输入,并提供程序的输出,同时说明如果程序没有给您想要的,您希望看到什么。了解如何使用stdin和stdout.@bradGonessurfing我想你没有读过OP的问题。如果输入不是一个数字,而读的是char
,而不是int
,那么(以及OP写的内容)将不起作用,可以通过将类型更改为int
(修改第48行)。此外,与其只是打印出来,不如使用调试器,设置断点并监视变量。(1)使用调试器并不更好。这是一种选择。我始终建议新用户熟悉godbolt,因为它使他们有机会提供完整的工作示例。如果用户提供了实际输入,我们会更好(2)你是对的,char在使用char时只选择单个字符。有点违反直觉,当a
是char时cin>>a
的行为不同于cin>>a
是int时a
的行为。还有其他关于这个主题的答案。例如,我根据@brc dd更新了OP的问题以澄清对预期的正确观察。
2
2
27
27
27
27