- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我最近才开始重新学习 C++,因为我在高中业余时间学习了它(使用 C++ Primer,第 5 版)。在进行基本练习时,我注意到以下程序无法在 Xcode 中正确执行,但会在 Ideone 中正确执行:http://ideone.com/6BEqPN
#include <iostream>
int main() {
// currVal is the number we're counting; we'll read new values into val
int currVal = 0, val = 0;
// read first number and ensure that we have data to process
if (std::cin >> currVal) {
int cnt = 1;
while (std::cin >> val) {
if (val == currVal)
++cnt;
else {
std::cout << currVal << " occurs " << cnt << " times." << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs " << cnt << " times." << std::endl;
}
return 0;
}
在 XCode 中,程序没有完成。它在 while 循环体的最后一次执行时停止。在调试控制台中,我看到有一个信号 SIGSTOP。 Screenshot
这是我第一次将 Xcode 用于任何类型的 IDE。我怀疑这可能与我的build设置有关?我已经为 GNU++11 配置它并使用 libstdc++。
对于为什么此代码可以在 Ideone 上运行,但不能在 Xcode 上运行的任何见解,我将不胜感激。另外,我想知道首选哪些 IDE,以及 Xcode 是否适合学习 C++11。谢谢!
最佳答案
你的 cin
永远不会停止。您的 while
循环的条件是 std::cin >> val
,因此循环将一直运行直到输入非数字的内容。在您的输入行 (42 42 42 42 42 55 55 62 100 100 100
) 被处理后,cin
不处于失败状态,它只是等待新的输入。如果您输入任何非数字的内容,您的循环将正确完成(例如 42 42 42 42 42 55 55 62 100 100 100 x
)。
如果你想读取单行输入,你应该使用std::getline
和stringstream
:
#include <iostream>
#include <sstream>
int main() {
// currVal is the number we're counting; we'll read new values into val
int currVal = 0, val = 0;
string str;
//read the string
std::getline(std::cin, str);
//load it to the stream
std::stringstream ss(str);
//now we're working with the stream that contains user input
if (ss >> currVal) {
int cnt = 1;
while (ss >> val) {
if (val == currVal)
++cnt;
else {
std::cout << currVal << " occurs " << cnt << " times." << std::endl;
currVal = val;
cnt = 1;
}
}
std::cout << currVal << " occurs " << cnt << " times." << std::endl;
}
return 0;
}
关于c++ - 程序在 Ideone 上正确执行,但在 Xcode 中不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33209417/
有人可以告诉我为什么会发生这种情况吗?这里出了什么问题: 我必须打印字符串的一部分,其中要打印的字符串的起始位置和长度在输入中给出。 问题:当我在 devC++ 中运行它时,一切都运行良好并且输出正常
这段代码有问题http://www.spoj.com/problems/BASE/它在 windows 和 linux 上运行良好,但是当我在 ideone 上运行它时,它没有显示任何输出。谁能告诉我
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import
我正在用 C 语言编写一个程序,用于查找两个排序数组的交集。当我在我的机器上使用 GCC 编译并运行该代码时,该代码工作正常,但在 ideone.com 上出现运行时错误。 这是Live link到下
我的程序有什么问题?它在我的 PC 上运行良好,但在 IDEone 中它提供了正确的输出,但显示运行时错误。请帮忙。 #include using namespace std; struct stud
好吧,我在 Ideone 上搞砸了并意外提交了这段代码,但令我惊讶的是它实际上编译并运行输出值 0,here . #include using namespace std; const int fi
我写了下面的代码: #include using namespace std; int main() { int v() return 0; } 我在 ideone 中运行了它,编译
我为我的家庭作业创建了一个程序,我尝试在 ideone.com 上测试它,但我得到一个错误: Exception in thread "main" java.lang.NullPointerExcep
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我最近试图在 ideone.com 中运行这段代码... #include #include using namespace std; int getVal(string name) {
请你告诉我我做错了什么。我认为我的代码工作正常,但未通过 Ideone 测试。 do{ linia = reading.nextLine(); try{ number
考虑下面的程序: #pragma startup foo1 #pragma exit foo2 void foo1() { printf("Called before main\n"); }
import java.util.Scanner; public class Admit { // the main method has minimal dialogue and just
我正在使用 ideone 作为在线 c++ 编译器。当我保存一个代码时,ideone 给出了一个随机名称,例如 lnzr40 稍后可能会造成混淆(当我想打开特定代码时)。我想在编写/保存代码时更改该名
我正在尝试远程指导我办公室的几个人使用 Python,最简单的方法似乎是向他们展示这些简单的 Python 示例如何...... http://wiki.python.org/moin/SimpleP
我正在尝试通过比较 Visual Studio 的输出与 GCC 的输出来调试我在 Visual Studio 中遇到的问题,但我似乎无法获得要在 Ideone 中编译的极其简化的代码版本: #inc
我想建立自己的在线编译器。我想为此使用 Ideone Api。但其 api 以 WSDL 格式提供。我非常努力地尝试,但可以找到任何关于如何从 WSDL 中提取数据的教程。请告诉一些使用 Ideone
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我正在尝试编写一个程序,该程序接受语法不正确的文本(长度低于 990 个字符)作为输入,对其进行更正,然后返回更正后的文本作为输出。我尝试使用在线编译器“ideone”运行该程序,但它返回了很多我不太
以下代码计算输入整数的阶乘。我在 Codeblocks 中运行了 2 个测试用例 - 9 和 2,并得到了正确的输出。对于相同的输入,ideone 将 2 的阶乘输出为 6,但它正确输出 9 的阶乘。
我是一名优秀的程序员,十分优秀!