Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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++ 将多个数字拆分为单个数字的数组输入(线性搜索) #包括 使用名称空间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_

问题(感谢@brc dd的澄清)是
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