首先考虑这个示例C++代码:
std::string input1, input2, input3;
std::cout << "Enter Input 1: ";
std::cin >> input1;
std::cout << std::endl << "Enter Input 2: ";
std::cin >> input2;
std::cout << std::endl << "Enter Input 3: ";
std::cin >> input3;
Run Code Online (Sandbox Code Playgroud)
如果对于input1,我输入类似"Good day neighbors"的内容,则input1设置为"Good",input2设置为"day",输入3设置为"neighbors".我甚至没有机会为input2和input3设置值.
所以我的问题是:如何在没有它的情况下输入包含空格的文本字符串(缺少更好的术语)分解并溢出到后续的输入流调用中?
提前感谢收到的任何和所有答案.
在C++标准库中,有一个名为pair的对象.Pair.first和Pair.second分别返回pair对象的第一个和第二个值.我想在条件下将第一个值递增一(我的对是一对).当我尝试这样做时,它正在抛出"需要1值".这可能是因为我不是通过引用传递值的某个地方,但它也可能是.first不会通过引用返回该对的第一个值.有谁知道它是否存在?
我的问题很快.
C++标准库是否为引用实现了哈希函数,例如 std::hash<T&>
datetime.timezone 类的文档仅说明:
将 tzinfo 抽象基类实现为与 UTC 的固定偏移量的类。
它接受 timedelta 作为其参数。
我从未见过直接从其他人的代码片段中使用它的示例,尽管我相信一定有它的用途,否则 Python 就没有必要公开这个 API。那么什么情况下建议直接使用这个类呢?与使用专用库(例如 pytz)相比,这有什么优势?
在我下面的代码中,如果找到该项目,我想通知for_each?怎么样?
#include <list>
#include <algorithm>
#include <functional>
using namespace std;
class widget {
public:
widget(int id) : m_id(id) {}
private:
int m_id;
};
class findwidget {
public:
findwidget(widget* p) : m_widget(p) {}
bool operator()(widget* p) const {
return p == m_widget ? true : false;
}
widget* m_widget;
};
list<widget*> m_widgetList;
void push_back(widget* pi){
if(m_widgetList.empty()) {
m_widgetList.push_back(pi);
} else {
if(!std::for_each(m_widgetList.begin(), m_widgetList.end(), findwidget(pi)))
m_widgetList.push_back(pi);
}
}
int main(int argc, char* argv[])
{
widget w1(1);
push_back(&w1);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用C++为Mac制作SDL游戏.我已经完成了与SDL相关的所有工作,但是当我尝试使用sqrt函数时,我得到了错误no matching function for call to 'sqrt'.这是我的包含列表和我的第一个函数(main()函数现在没有真正做任何事情):
#include <iostream>
#include <stdlib.h>
#include <SDL/SDL.h>
#include <math.h>
#include "geometry.h"
using namespace std;
void drawLine(vector2 start, vector2 end)
{
double x = end.x - start.x;
double y = end.y - start.y;
double length = sqrt(x*x, y*y); // I get the error here
}
Run Code Online (Sandbox Code Playgroud)
我也试过导入相同的结果.有什么特别的我必须在Mac(Lion,XCode 4.3)上做这个工作吗?
编辑:为了完整性,geometry.h包含vector2结构的定义
我在C++ 03环境中工作,并将一个函数应用于地图的每个键是很多代码:
const std::map<X,Y>::const_iterator end = m_map.end();
for (std::map<X,Y>::const_iterator element = m_map.begin(); element != end; ++element)
{
func( element->first );
}
Run Code Online (Sandbox Code Playgroud)
如果key_iterator存在,相同的代码可以利用std::for_each:
std::for_each( m_map.key_begin(), m_map.key_end(), &func );
Run Code Online (Sandbox Code Playgroud)
那为什么不提供呢?有没有办法让第一种模式适应第二种模式?
目前我正在学习C.我明白,很多常用的功能,如printf和scanf是C语言的实际上不是一部分-他们是功能的"标准库"的一部分.
我的问题是,为什么这些功能没有内置到语言中?这是哲学/设计考虑因素吗?编译程序时的效率问题?是否需要充当"中间层"以确保与不同操作系统的兼容性?还有别的吗?
我想使用该<complex.h>库来加速某些计算,其中可能包括多达20个复杂元素和运算(+-* /)。但是,我的同事声明了一个结构:
struct complex {
double a;
double b;
};
Run Code Online (Sandbox Code Playgroud)
因此,complex由于与上述结构冲突,无法使用来自库的宏。
事实是,由于对当前项目的巨大影响,我无法更改结构的名称。我尝试使用_Complex宏来代替,并取出#include <complex.h>头,它的工作,但_Imaginary_I,_Complex_I还是I不起作用。
#include <stdio.h> /* Standard Library of Input and Output */
// #include <complex.h> /* I want to remove this */
int main() {
struct complex
{
double a;
double b;
};
double _Complex z1 = 1.0;// + 3.0 * _Complex_I;
double _Complex z2 = 1.0;// - 4.0 * _Complex_I;
// none of these …Run Code Online (Sandbox Code Playgroud)