我在Windows上使用Eclipse和MinGW工具链(g ++等).我有一个我在darwin上构建的程序,它使用wifstream和wofstream读取和写入文件.该程序的编译和工作在darwin(Mac)上使用eclipse找到...没有我的问题.
当我将代码移动到Windows并尝试使用MinGW工具链和eclipse进行构建时,我在wifstream,wofstream和wcout上遇到编译错误.定义为wstring的变量编译得很好.
例如:
wifstream inFile; inFile.open(argv [2],ios_base :: in);
导致编译错误
..\src\pdConv.cpp:31:错误:在此范围内未声明`wifstream'
这似乎表明编译器认为wifstream是一个变量.我注意到包含文件中没有启用_GLIBCXX_USE_WCHAR_T指令.我是否需要自己定义,或者环境中应该知道这个?如果我手动定义它,似乎我不能在同一程序中使用宽和窄的实现.
这可能是显而易见的,但我一直坚持这个问题很久......哈哈.我在这里错过了什么?
我有一个sed命令,可以成功打印匹配两个模式的行:
sed -n '/PAGE 2/,/\x0c/p' filename.txt
Run Code Online (Sandbox Code Playgroud)
我没想到的是,我希望它能够打印第一个令牌中的所有行,直到第二个令牌.该\x0c
令牌是在一个大平面文件记录分隔符,我需要保持该行不变.
在两个令牌之间,数据是完全可变的,我没有可靠的锚来使用.
[澄清]现在它打印所有行/PAGE 2/
和/\x0c/
包含.我希望它打印/PAGE 2/
到/\x0c/
记录中的下一个.
[测试数据] /x0c
将在第一行的开头和此记录的最后一行的开头.
我需要通过下一条记录开头之前的行删除记录的第一行.
^L20-SEP-2006 01:54:08 PM Foobars College PAGE 2
TERM: 200610 Student Billing Statement SUMDATA
99999
Foo bar R0000000
999 Geese Rural Drive DUE: 15-OCT-2012
Columbus, NE 90210
--------------------------------------------------------------------------------
Balance equal to or greater than $5000.00 $200.00
Billing inquiries may be directed to 444/555-1212 or by
email to bursar@foobar.edu. Financial Aid inquiries should
be directed …
Run Code Online (Sandbox Code Playgroud) package polymordemo1;
class animal{
public void getanimal(animal anim) {
anim.ganim();
}
private void ganim() {
System.out.println("this is the animal");
}
}
class cat extends animal{
public void ganim() {
System.out.println("I am cat");
}
}
class bat extends animal{
public void ganim() {
System.out.println("I am bat");
}
}
public class PolymorDemo1 {
public static void main(String[] args) {
animal a=new animal();
cat c=new cat();
bat b=new bat();
a.getanimal(c);
a.getanimal(b);
}
}
Run Code Online (Sandbox Code Playgroud)
我是Java的新手,我正在研究多态性.
此代码的输出结果为:
这是动物
这是动物.
事实上我期待这个输出:
这是猫
这是蝙蝠
什么似乎是代码中的错误.
我发现,BOOST_REVERSE_FOREACH与BOOST_FOREACH的工作方式不同.
我的代码:
#include <boost\unordered_map.hpp>
#include <boost\foreach.hpp>
#include <iostream>
#include <string>
typedef boost::unordered_map<std::string, int> map;
int main()
{
map MyMap;
MyMap["two"] = 2;
MyMap["three"] = 3;
MyMap["one"] = 1;
std::cout << MyMap["one"] << MyMap["two"] << MyMap["three"] << std::endl;
BOOST_FOREACH (map::value_type value, MyMap)
{
std::cout << value.second;
}
std::cout << std::endl;
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我也想使用反向迭代.所以我补充说:
BOOST_REVERSE_FOREACH (map::value_type value, MyMap)
{
std::cout << value.second;
}
std::cout << std::endl;
Run Code Online (Sandbox Code Playgroud)
在此之后它无法编译,是否有人可以告诉如何在无序地图上使用反向foreach.
编译器给出:
1>c:\boost_1_52_0\boost\iterator\reverse_iterator.hpp(45): error C2675: unary '--' : 'boost::unordered::iterator_detail::iterator<NodePointer,Value>' does not define this operator …
Run Code Online (Sandbox Code Playgroud) 这是代码:
byte bytes[] = {0x2e, 0x20, 0x65, 0x00, 0x74, 0x00, 0x61, 0x00, 0x64, 0x00, 0x70, 0x00, 0x75, 0x00, 0x67, 0x00};
std::wstring s;
s.resize( 8 );
memcpy( &s[0], bytes, 16 );
_tprintf( _T("key: %s\n"), s.c_str());
MessageBox ( 0, s.c_str(), _T(""), 0 );
Run Code Online (Sandbox Code Playgroud)
消息框中的结果gupdate
位于控制台中?etadpug
.
我认为这是编码.0x2e20或0x202e是什么意思吗?
我想创建一个函数,它返回一个数字的百分比作为int(在这种情况下为10%,因此它将返回传入的int的10%),例如,如果你传递76,它将返回8.基本上它就像下面的功能,但我认为必须有一个更好的方法来做到这一点.
int percent(int y){
int x;
if(y >= 95)
return 10;
else if(y >= 85)
return 9;
else if(y >= 75)
return 8;
...
}
Run Code Online (Sandbox Code Playgroud) 我试图检查字符串中的第一个字母是否为l,l可以是大写或小写,如果是l我想从字符串中修剪它并且我目前正在使用此代码来执行此操作
String firstLetter = result.Text[0].ToString();
if (result.Text.Length == 18)
{
if (firstLetter.Equals("l".ToString()) || firstLetter.Equals("L".ToString()))
{
result.Text.Remove(0, 1);
}
if (firstLetter == "l" || firstLetter == "L" || firstLetter == "1")
{
result.Text.Remove(0, 1);
}
if (result.Text.StartsWith("l".ToString()) || result.Text.ToUpper().StartsWith("L".ToString()))
{
result.Text.Remove(0, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
这些if语句都没有奏效,它们完全被忽略了,为什么它们不起作用?
我有一个PHP代码的短信脚本,我通过短信门户网站收到了短信.但在某些消息中,我有\ r和\n但是在短信门户上没有像\ r \n找到的特殊字符
我的消息是 - NOKXX REG WMAH12345
但我有这个 - NOKXX REG WMAH12345\r NOKXX REG WMAH12345 \n NOKXX REG WMAH12345 \n \n NOKXX REG\RWMAH35907
我从get方法获得消息.............
$message = $_GET['message'];// Message content
Run Code Online (Sandbox Code Playgroud)
我试过这个
$message=str_replace("\r\n","",$message);
Run Code Online (Sandbox Code Playgroud)
这也是
$message = trim($message);
// from everywhere
$message = str_replace("\n", "", $message);
$message = str_replace("\r", "", $message);
Run Code Online (Sandbox Code Playgroud)
请建议一些备用
我正在阅读GitHub项目(JClouds-Chef)的源代码,偶然发现了最奇特的Java:
Iterable<Module> modules =
ImmutableSet.<Module> of(new SshjSshClientModule(), new SLF4JLoggingModule(),
new EnterpriseConfigurationModule());
Run Code Online (Sandbox Code Playgroud)
什么是of
?这个有效的Java怎么样?是of
方法吗?如果是这样,它在哪里定义?它是一些奇怪的,模糊的Java运算符,几乎没有使用过吗?这是一个像lambda一样古怪的东西吗?我正在撕扯我的头发试图找出它的位置,它做了什么,以及它的定义在哪里!
我意识到这些可能是初学者的问题,但为了正确理解概念,我会欣赏可靠的答案或文档链接.
是什么意思&
或*
在参数名称的前面,或后的C++函数的数据类型?
例如:
void ApplicationUI::requestFinished(QNetworkReply* reply) { //... }
要么
void PostHttp::post(const QString &body) { //... }
奖金问题
在上面的post函数中...确实const
使得这个函数需要传递常量变量或者它有不同的原因吗?
我有以下情况.
int *arrayP=new int[4];
arrayP[0]=0;arrayP[1]=1;arrayP[2]=2;arrayP[3]=3;
int *temp;
cout<<arrayP[0]<<endl;
temp=arrayP;
++arrayP;
cout<<arrayP[0];
cout<<arrayP[1];
delete temp;
cout<<arrayP[0];
Run Code Online (Sandbox Code Playgroud)
产量
0
1
2
-1212222
Run Code Online (Sandbox Code Playgroud)
为什么会这样?arrayP指向大小为4的数组上的第一个元素.因此temp也指向第一个元素现在为什么删除temp即第一个元素也会删除整个整数array.arrayP会存储数组的下一个元素的地址,因此数组不是孤儿.(我假设它删除了整数数组,因为arrayP [0]显示垃圾值.)
如果是这种情况(即删除temp将删除整个整数数组)删除[]和删除之间的区别.
我知道在某些情况下,指向指针的指针被描述为矩阵.有人可以解释一下,为什么这种方式有效?哪个C
属性允许呢?
请不要发布指针这样的答案指针并不总是矩阵.我知道,但我在问某些情况下为什么它是一个矩阵.
今天发现VS2010不支持round
C++项目中的功能.有关该功能的信息已在此处找到.还注意到也没有trunc
功能.
所以尝试了一些东西并注意到一些可能有助于这种情况的行为.
float a = 2.999;
int b = (int)a; //gives 2
Run Code Online (Sandbox Code Playgroud)
float a = -2.999;
int b = (int)a; //gives -2
Run Code Online (Sandbox Code Playgroud)
这可以作为截断,所以我可以使用它,但是我不想使用导致未定义行为的代码.所以想问一下这是定义的还是未定义的行为.
编辑:因为我正在使用VS2008,所以我不会问C++ 11.